{{tag>brouillon}}

----

====== Syntaxe des liens physiques ou symboliques ======

<note warning>Attention, ce tuto est à l'état d'ébauche</note>
===== Définitions =====

Il existe deux types de liens qui permettent de rediriger un fichier vers un autre : les liens physiques et les liens symboliques. 

Contrairement à ce qui se passe avec un lien symbolique, avec un lien physique les données du disque sont pointées par plusieurs entrées de répertoire.

Un lien symbolique est en fait un fichier qui pointe vers un autre fichier ; un lien matériel est quant à lui l'information exacte elle-même, située à la même position sur le disque dur. Avec un lien physique, vous pouvez copier certaines données du fichier cible, effacer le reste du fichier, et il continuera à exister ; avec les liens symboliques, si vous supprimez le fichier cible, ils pointeront alors vers un fichier inexistant !

Mais, d'après la documentation originale, il est plus facile de distinguer les différences entre un tout petit lien symbolique et le fichier cible, que les différences entre plusieurs liens matériels. En fait, c'est impossible à distinguer, car il s'agit exactement de la même chose.

  * **Lien physique** : permet de donner plusieurs noms/chemin d'accès, à un même fichier en pointant sur un numéro de fichier, (en interne Linux enregistre les fichiers sur la base d'un numéro et pas sur la base d'un nom). Un fichier peut donc avoir plusieurs noms, et existera tant qu'il a au moins un nom. Contrairement aux liens symboliques, **ils ne peuvent pointer que vers un autre élément du même système de fichiers.**

Voici le résultat obtenu en entrant la commande **ln** avec l'option -i (ou - -inode) qui permet d'afficher le numéro d'inode dans le système de fichiers:

<code> dupont@dupont-pc:~$ ln -i ~/fichiersource ~/Bureau/monlienphysique 
5954521 ~/fichiersource       5954521 ~/Bureau/monlienphysique
</code>

Comme dit plus haut, les différents liens physiques pointent vers un **même** numéro d'index.


  * **Lien symbolique** : permet d'attribuer un autre chemin d'accès à un fichier en pointant sur un nom de fichier. 

Voici le résultat obtenu en entrant la même commande **ls -i**
 
<code> dupont@dupont-pc:~$ ls -i ~/fichiersource ~/Bureau/monliensymbolique 
5954521 ~/fichiersource       6876911 ~/Bureau/monliensymbolique
</code>

On voit que les deux fichiers pointent vers deux numéros d'inode **différents**.

<note help>Dans quels cas est-il plus judicieux d'utiliser un lien symbolique plutôt qu'un lien physique, et vice-versa ? FIXME
Réponse partielle : Dans le cas ou le lien doit pointer vers un autre système de fichiers (autre partition ou autre support de stockage) seul le lien symbolique est possible.
</note>

===== Explication graphique =====
=== situation de départ ===
fichier source : [source]-->[secteur n du disque]
=== situation après création des liens ===
lien physique/dur : [source]-->[secteur n du disque]<-- [lien_dur]

lien symbolique : [lien_symb]-->[source]-->[secteur n du disque]

=== situation après effacement du fichier source ===

lien physique/dur : [lien_dur]-->[secteur n du disque]

lien symbolique : [lien_symb]-->?

=== situation après renommage ou déplacement du fichier source ===

lien physique/dur : [source_modif]-->[secteur n du disque]<-- [lien_dur]

lien symbolique : [lien_symb]-->?       [source_modif]-->[secteur n du disque]

<note important>Malheureusement les liens symboliques ne sont pas mis à jour lorsque le fichier source est déplacé ou renommé. Il faut les recréer.</note>
===== Pré-requis pour l'exemple =====

On montrera cela par un exemple simple :

On crée un document texte (ici la liste des paquets installés) dans le home :

   dpkg -l>source

===== Exemple de lien physique =====

On crée un lien physique (que l'on nomme lien_dur)
   ln source lien_dur

Maintenant, on peut également lire le document source à partir de lien_dur
   gedit lien_dur

Il est possible de connaître le nombre de liens qui amènent au même fichier :
   ls -l source
   ls -l lien_dur
Si on souhaite effacer le fichier source, le document existera toujours :
   rm source
   gedit lien_dur

===== Exemple de lien symbolique =====

Le lien symbolique s'utilise également avec ln, en ajoutant toutefois l'option -s. 

On crée un lien symbolique (que l'on nomme lien_symb)
   dpkg -l>source
   ln -s source lien_symb

On pourra toujours lire source depuis lien_symb
   gedit lien_symb

Mais à la différence du lien physique, après la destruction de source, le fichier ne sera plus accessible !
   rm source
   gedit lien_symb

On peut déceler les liens symboliques avec ls -F, ils apparaissent avec un @ à la fin. 
   ls -F

===== Autres documentations disponibles =====
  * [[http://wiki.linux-france.org/wiki/Les_commandes_fondamentales_de_Linux | Explication sur linux-france.org]] 
----

//Contributeurs : à partir des documents cités, [[utilisateurs:Matifou]], pour l'explication graphique : [[utilisateurs:mohican]] //